# encoding=utf-8

from torch.utils.data import Dataset
from torch.utils.data.dataset import T_co


class BatchLoaderFactory(Dataset):
    """批量处理数据工厂接口类
        主要需要实现以下几件事情:
            1. 数据预处理
            2. 获取初始化的数据长度
            3. 数据装载(让重复利用成为可能)
    """

    def load_data(self, path: str, **kwargs):
        raise NotImplementedError

    def prepare_data(self, index: int):
        raise NotImplementedError

    def get_data_lens(self):
        raise NotImplementedError

    def __len__(self):
        return self.get_data_lens()

    def __getitem__(self, index: int) -> T_co:
        return self.prepare_data(index)

    def get_index(self, tokens):
        raise NotImplementedError

    def get_tokens(self, indices):
        raise NotImplementedError
